package myzd.client.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import myzd.domain.enums.PaymentPayType;

import java.util.Date;

/**
 * @author zks
 * @since 2017/10/25 16:00
 */
@NoArgsConstructor
@AllArgsConstructor
@Data
@EqualsAndHashCode(callSuper = false)
public class ServicePayment extends BasePayment {
  /**
   * 收款类型
   */
  private PaymentPayType payType;

  /**
   * 面诊医生
   */
  private String orderDoctorName;

  /**
   * 面诊医生ID
   */
  private Integer orderDoctorId;

  /**
   * 面诊医生收款账户姓名
   */
  private String doctorAccountName;

  /**
   * 面诊医生收款账户信息
   */
  private String doctorAccountInfo;

  /**
   * 应收金额
   */
  private Integer receivableFee;

  /**
   * 实收金额
   */
  private Integer receivedFee;

  /**
   * ping++支付ID
   */
  private String receivedPingxxId;

  /**
   * 收款第三方单号
   */
  private String receivedTransactionId;

  /**
   * 收款时间
   */
  @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
  private Date receivedAt;

  /**
   * 返回数据 - 收款
   */
  private String receivedData;

  /**
   * 付款人微信OPENID
   */
  private String payerAuthId;

  /**
   * 付款人微信渠道
   */
  private String payerAuthSource;

  /**
   * 付款人微信信息
   */
  private String payerAuthInfo;

  /**
   * 退款金额
   */
  private Integer refundFee;

  /**
   * 退款订单编号
   */
  private Long refundNumber;

  /**
   * ping++退款ID
   */
  private String refundPingxxId;

  /**
   * 退款时间
   */
  @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
  private Date refundAt;

  /**
   * 返回数据 - 退款
   */
  private String refundData;

  /**
   * 应付金额
   */
  private Integer payableFee;

  /**
   * 实付金额
   */
  private Integer payFee;

  /**
   * ping++打款ID
   */
  private String payPingxxId;

  /**
   * 付款第三方单号
   */
  private String payTransactionId;

  /**
   * 付款时间
   */
  @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
  private Date payAt;

  /**
   * 返回数据 - 付款
   */
  private String payData;

  /**
   * 退款/打款操作人ID
   */
  private String operatorId;

  /**
   * 退款/打款操作人
   */
  private String operatorName;

  /**
   * 退款/打款操作时间
   */
  @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
  private Date operatedAt;

}
